home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-02-19 | 7.0 KB | 187 lines | [TEXT/CWIE] |
-
- #include "TransactionAwareObject.h"
-
- #include "Transaction.h"
-
- #include "Exceptions.h"
-
- //--------------------------------------------------------------------------------
- // TTransactionBaseObject::AddReference
- //--------------------------------------------------------------------------------
- void TTransactionBaseObject::AddReference() const
- {
- ++((TTransactionBaseObject*)this)->fReferenceCount;
- } // TTransactionBaseObject::AddReference
-
- //--------------------------------------------------------------------------------
- // TTransactionBaseObject::RemoveReference
- //--------------------------------------------------------------------------------
- Boolean TTransactionBaseObject::RemoveReference() const
- {
- --((TTransactionBaseObject*)this)->fReferenceCount;
-
- return (this->fReferenceCount == 0);
- } // TTransactionBaseObject::RemoveReference
-
- //--------------------------------------------------------------------------------
- // TTransactionBaseObject::DisposeRecordIfUnreferenced
- //--------------------------------------------------------------------------------
- void TTransactionBaseObject::DisposeRecordIfUnreferenced()
- {
- if(this->fReferenceCount == 0)
- {
- delete this;
- }
- } // TTransactionBaseObject::DisposeRecordIfUnreferenced
-
- //--------------------------------------------------------------------------------
- // TTransactionBaseObject::PrepareToCommit
- //--------------------------------------------------------------------------------
- void TTransactionBaseObject::PrepareToCommit(TTransaction* /*transaction*/)
- {
- } // TTransactionBaseObject::PrepareToCommit
-
- //--------------------------------------------------------------------------------
- // TTransactionAwareObject::GrabUpdatePointer
- //
- // In time this should return a AnUpdate<TTransactionAwareObject> instead
- // of a TTransactionAwareObject*
- //--------------------------------------------------------------------------------
- TTransactionAwareObject* TTransactionAwareObject::GrabUpdatePointer(TTransaction* transaction) const
- {
- REQUIREVALIDPOINTER(transaction);
-
- //
- // If this object is not in any transaction yet,
- // set up the transaction links.
- //
- if(this->InTransaction() == false)
- {
- this->SetTransaction(transaction);
- transaction->Add((TTransactionAwareObject*)this);
- }
- //
- // If this object is already in some transaction, and if that transaction
- // is not the transaction that we're trying to become part of, then we fail.
- //
- else if(this->InTransaction(transaction) == false)
- FailErr(eAlreadyInTransaction);
-
- //
- // Cast away our const-ness and return this object.
- //
- return (TTransactionAwareObject*)this;
- }
-
- //--------------------------------------------------------------------------------
- // TTransactionAwareObject::AbstractDBRecord
- //--------------------------------------------------------------------------------
- //const
- TDBRecord* TTransactionAwareObject::AbstractDBRecord() const
- {
- Throw(eWrongDataType);
- return nil;
- } // TTransactionAwareObject::AbstractDBRecord
-
- //--------------------------------------------------------------------------------
- // TTransactionAwareObject::DBElementRecord
- //--------------------------------------------------------------------------------
- //const
- TDBElement* TTransactionAwareObject::DBElementRecord() const
- {
- Throw(eWrongDataType);
- return nil;
- } // TTransactionAwareObject::DBElementRecord
-
- //--------------------------------------------------------------------------------
- // TTransactionAwareObject::DBPropertyRecord
- //--------------------------------------------------------------------------------
- //const
- TDBProperty* TTransactionAwareObject::DBPropertyRecord() const
- {
- Throw(eWrongDataType);
- return nil;
- } // TTransactionAwareObject::DBPropertyRecord
-
- //--------------------------------------------------------------------------------
- // TTransactionAwareObject::DataRecord
- //--------------------------------------------------------------------------------
- //const
- TDataRecord* TTransactionAwareObject::DataRecord() const
- {
- Throw(eWrongDataType);
- return nil;
- } // TTransactionAwareObject::DataRecord
-
- //--------------------------------------------------------------------------------
- // AConst<TTransactionAwareObject>::AddReference
- //--------------------------------------------------------------------------------
- void AConst<TTransactionAwareObject>::AddReference() const
- {
- if(fRecord != nil)
- fRecord->AddReference();
- } // AConst<TTransactionAwareObject>::AddReference
-
- //--------------------------------------------------------------------------------
- // AConst<TTransactionAwareObject>::RemoveReference
- //--------------------------------------------------------------------------------
- void AConst<TTransactionAwareObject>::RemoveReference() const
- {
- if(fRecord != nil)
- fRecord->RemoveReference();
- } // AConst<TTransactionAwareObject>::RemoveReference
-
- //--------------------------------------------------------------------------------
- // AnUpdate<TTransactionAwareObject>::AddReference
- //--------------------------------------------------------------------------------
- void AnUpdate<TTransactionAwareObject>::AddReference() const
- {
- if(fRecord != nil)
- fRecord->AddReference();
- } // AnUpdate<TTransactionAwareObject>::AddReference
-
- //--------------------------------------------------------------------------------
- // AnUpdate<TTransactionAwareObject>::RemoveReference
- //--------------------------------------------------------------------------------
- void AnUpdate<TTransactionAwareObject>::RemoveReference() const
- {
- if(fRecord != nil)
- fRecord->RemoveReference();
- } // AnUpdate<TTransactionAwareObject>::RemoveReference
-
- //--------------------------------------------------------------------------------
- // AConst<TTransactionBaseObject>::AddReference
- //--------------------------------------------------------------------------------
- void AConst<TTransactionBaseObject>::AddReference() const
- {
- if(fRecord != nil)
- fRecord->AddReference();
- } // AConst<TTransactionBaseObject>::AddReference
-
- //--------------------------------------------------------------------------------
- // AConst<TTransactionBaseObject>::RemoveReference
- //--------------------------------------------------------------------------------
- void AConst<TTransactionBaseObject>::RemoveReference() const
- {
- if(fRecord != nil)
- fRecord->RemoveReference();
- } // AConst<TTransactionBaseObject>::RemoveReference
-
- //--------------------------------------------------------------------------------
- // AnUpdate<TTransactionBaseObject>::AddReference
- //--------------------------------------------------------------------------------
- void AnUpdate<TTransactionBaseObject>::AddReference() const
- {
- if(fRecord != nil)
- fRecord->AddReference();
- } // AnUpdate<TTransactionBaseObject>::AddReference
-
- //--------------------------------------------------------------------------------
- // AnUpdate<TTransactionBaseObject>::RemoveReference
- //--------------------------------------------------------------------------------
- void AnUpdate<TTransactionBaseObject>::RemoveReference() const
- {
- if(fRecord != nil)
- fRecord->RemoveReference();
- } // AnUpdate<TTransactionBaseObject>::RemoveReference
-